/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bizfty.api.apimanager.models;

import com.bizfty.api.commons.models.BasicEntity;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * 相当于 java 的 class 
 * 业务模型 也对应到数据库 表
 * @author johns
 */

@Entity
@Table(name = "T_API_MODEL")
@XmlRootElement
public class Model extends BasicEntity {
    /**
     * 模型名称
     * 通常是一个中文名称
     */
    private String name;
    /**
     * 模型代码
     * 通过是类的文件名或者类名
     */
    private String code;
    /**
     * 模型备注
     */
    private String remark;
    /**
     * 属性
     */
    @OneToMany(mappedBy="model")
    private List<Field> fields;
    /**
     * 父模型
     * 通常用来表示继承关系
     */
    @ManyToOne
    @JoinColumn(name = "PARENT_ID")
    private Model parent;

    /**
     * 模型名称
     * 通常是一个中文名称
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * 模型名称
     * 通常是一个中文名称
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 模型代码
     * 通过是类的文件名或者类名
     * @return the code
     */
    public String getCode() {
        return code;
    }

    /**
     * 模型代码
     * 通过是类的文件名或者类名
     * @param code the code to set
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * 模型备注
     * @return the remark
     */
    public String getRemark() {
        return remark;
    }

    /**
     * 模型备注
     * @param remark the remark to set
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }

    /**
     * 属性
     * @return the fields
     */
    public List<Field> getFields() {
        return fields;
    }

    /**
     * 属性
     * @param fields the fields to set
     */
    public void setFields(List<Field> fields) {
        this.fields = fields;
    }
    
}
